Skip to content

[pull] main from remix-run:main - #297

Merged
pull[bot] merged 84 commits into
code:mainfrom
remix-run:main
Jun 17, 2026
Merged

[pull] main from remix-run:main#297
pull[bot] merged 84 commits into
code:mainfrom
remix-run:main

Conversation

@pull

@pull pull Bot commented Jun 17, 2026

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

jacob-ebey and others added 30 commits March 24, 2026 15:31
- updates jest
# Conflicts:
#	packages/create-react-router/package.json
#	packages/react-router-architect/package.json
#	packages/react-router-cloudflare/package.json
#	packages/react-router-dev/package.json
#	packages/react-router-dom/package.json
#	packages/react-router-express/package.json
#	packages/react-router-fs-routes/package.json
#	packages/react-router-node/package.json
#	packages/react-router-remix-routes-option-adapter/package.json
#	packages/react-router-serve/package.json
#	packages/react-router/package.json
…rmProps (#14932)

* fix(types): remove deprecated FormEventHandler override from SharedFormProps

Closes #14795

* chore: sign CLA and add changeset
- removes Vite 6/non-environment support
- drops the React Router Cloudflare dev proxy in favor of @cloudflare/vite-plugin
- make unstable_previewServerPrerendering the default
- refactor: rename bin files to .cjs and update references
- fix: resolve Windows libuv assertion during prerendering by using node:http for internal requests

Co-authored-by: Copilot <copilot@github.com>
* Remove `future.v8_middleware` flag and inline always-on codepaths

Middleware is now always enabled in v8. Removes the flag from the
runtime, dev config, typegen, server adapters, RSC, types, tests, and
docs. `getLoadContext` must return a `RouterContextProvider` instance.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Fix integration test fixtures for always-on middleware context

Update EXPRESS_SERVER helper and vite-loader-context-test to provide a
RouterContextProvider instead of a plain object, since getLoadContext now
requires a RouterContextProvider after the v8_middleware flag removal.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Fix remaining integration test fixtures for always-on middleware

Three more fixtures still passed plain objects as load context, which
the always-on middleware runtime now rejects:

- helpers/express.ts: dropped the leftover getLoadContext = () => ({}),
  no consumer (vite-dotenv-test, vite-hmr-hdr-test)
- vite-plugin-cloudflare-template: workers/app.ts now constructs a
  RouterContextProvider and sets a cloudflareContext key from a new
  shared app/cloudflare.ts; vite-plugin-cloudflare-test's route reads
  via context.get(cloudflareContext)
- vite-plugin-cloudflare-test: pass inspectorPort: false so parallel
  workers don't race on miniflare's inspector port 9229

Also drop vite-cloudflare-test.ts since @react-router/dev/vite/cloudflare
is being removed in v8.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
* feat: remove future.v8_passThroughRequests flag

Request passthrough is now the unconditional default. The raw incoming
`request` is always passed through to `loader`/`action`; use `url` for
the normalized URL without React Router-specific implementation details
(`.data` suffixes, `index`/`_routes` search params).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* test: update error message expectations for passthrough URLs

The 405/POST error message now contains the raw `.data` URL since the
request is passed through unmodified.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* test: update request URL expectations for passthrough

CSR navigations now see the raw `.data` URL on `request.url`, and SSR
POSTs to index routes see the `?index` query param that the form
submits with.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* test: use normalized url in loaders for resource and single-fetch tests

With passthrough now the default, `request.url` includes `.data`/`_routes`
suffixes; switch loaders to the `url` arg or strip suffixes manually so
test intent is preserved.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* Bump small-effort dependencies for v8

Patch and minor bumps across the workspace — no API-breaking changes.
Excludes react/vite/vitest/jest-family deps (handled separately) and
held-back risky bumps (wrangler, msw, @mdx-js/rollup transitive conflict).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Revert integration dedent to ^0.7.0

v1 changed escape handling in tagged templates, breaking
vite-presets-test.ts where the BUILD_END_META.js fixture
relies on `.join("\\n")` inside a String.raw template. Deferred
to its own PR (#3.5 in the v8 deps roadmap).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Bump integration dedent to ^1.7.2 to match react-router-dev

v1 stops interpreting backslash escapes in the function-call form,
so `String.raw\`...\\n...\`` now preserves both backslashes. Update
the one affected call site in vite-presets-test.ts to use a single
backslash so the joined newline survives to the written fixture.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Update wrangler dep

* Remove workerd/react-is overrides

* Add back react-is override needed for tests

* Add dependency bump change files

* Reset wrngler peerDeps to just ^4.0.0

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* Make route module splitting default in v8

Move the v8 route module splitting option out of future flags and resolve it as a top-level config field that defaults to true. Update plugin consumers, docs, fixtures, and tests to use splitRouteModules for opt-out/enforce behavior.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Fix lazy client middleware error boundaries

Load lazy route boundary metadata before bubbling client middleware errors that occur before route handlers run. This preserves route-level error boundaries when route module splitting loads middleware from a separate chunk.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Move route module splitting docs

Move the route module splitting explanation from the future flags page into the automatic code splitting guide.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Handle lazy boundary load errors in middleware

Convert lazy route load failures encountered while selecting client middleware error boundaries into data strategy error results instead of allowing them to escape the middleware pipeline.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Use optional catch binding for lazy boundary load

Simplify the error handler using an optional catch binding instead of an unused variable + eslint-disable comment.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Polish split route modules config migration

Clean up the v8 route module splitting migration now that splitRouteModules defaults to true. Remove obsolete future flag warning coverage, mark the config change as major, and simplify test/playground configs that rely on the default behavior.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Update active packages and templates to use @types/node 22.19.x so the workspace matches the Node 22.12 runtime floor. Refresh the lockfile to collapse older Node 20 and 22.14 type resolutions.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Update misc type and tooling dependencies

* Update dev-time ESM dependencies
* Upgrade TypeScript to 6

* Migrate package builds to tsdown

* Use native tsdown config loading

* Enable tsdown unbundle mode

* Add change files for build tooling updates

* Remove unbundle because its dumb

* Fix snapshot

* chore: modernize TypeScript configs across workspace

* Consolidate shared tsconfig options to a base config
jacob-ebey and others added 27 commits June 5, 2026 13:05
* Remove upgrading from remix guide

* Update upgrading guides

* Add note on timing for next major

* Updates

* Add back v7 guide

* Updates

* Update

* Update
Assisted-By: devx/988c1e2f-7688-4786-a6e7-89ad2f4a9d6e
Assisted-By: devx/988c1e2f-7688-4786-a6e7-89ad2f4a9d6e
Assisted-By: devx/988c1e2f-7688-4786-a6e7-89ad2f4a9d6e
@pull pull Bot locked and limited conversation to collaborators Jun 17, 2026
@pull pull Bot added the ⤵️ pull label Jun 17, 2026
@pull
pull Bot merged commit ce78333 into code:main Jun 17, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants